home *** CD-ROM | disk | FTP | other *** search
/ Amiga Games 1996 July / Amiga Games 1996 #7.iso / userbox / publicdomain / skandalfocdp12 / source / scdp.h < prev    next >
C/C++ Source or Header  |  1996-04-01  |  6KB  |  269 lines

  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5. #include <stdlib.h>
  6. #include <dos.h>
  7. #include <dos/dos.h>
  8. #include <graphics/gfxmacros.h>
  9. #include <exec/types.h>
  10. #include <exec/io.h>
  11. #include <exec/execbase.h>
  12. #include <exec/nodes.h>
  13. #include <exec/memory.h>
  14. #include <exec/libraries.h>
  15. #include <workbench/workbench.h>
  16. #include <workbench/startup.h>
  17. #include <devices/trackdisk.h>
  18. #include <devices/scsidisk.h>
  19. #include <devices/timer.h>
  20. #include <devices/inputevent.h>
  21. #include <libraries/dos.h>
  22. #include <libraries/mui.h>
  23. #include <libraries/diskfont.h>
  24. #include <clib/diskfont_protos.h>
  25. #include <clib/alib_protos.h>
  26. #include <clib/asl_protos.h>
  27. #include <clib/muimaster_protos.h>
  28. #include <clib/exec_protos.h>
  29. #include <clib/dos_protos.h>
  30. #include <clib/utility_protos.h>
  31. #include <clib/gadtools_protos.h>
  32. #include <clib/graphics_protos.h>
  33. #include <clib/icon_protos.h>
  34. #include <clib/commodities_protos.h>
  35. #include <clib/wb_protos.h>
  36. #include <clib/intuition_protos.h>
  37. #include <clib/locale_protos.h>
  38. #include <intuition/intuition.h>
  39. #include <intuition/gadgetclass.h>
  40. #include <graphics/displayinfo.h>
  41. #include <pragmas/diskfont_pragmas.h>
  42. #include <pragmas/exec_sysbase_pragmas.h>
  43. #include <pragmas/dos_pragmas.h>
  44. #include <pragmas/icon_pragmas.h>
  45. #include <pragmas/graphics_pragmas.h>
  46. #include <pragmas/intuition_pragmas.h>
  47. #include <pragmas/gadtools_pragmas.h>
  48. #include <pragmas/utility_pragmas.h>
  49. #include <pragmas/asl_pragmas.h>
  50. #include <pragmas/muimaster_pragmas.h>
  51. #include <pragmas/locale_pragmas.h>
  52.  
  53. extern struct Library *SysBase,*IntuitionBase,*UtilityBase,*GfxBase,*DOSBase,*IconBase,*DiskfontBase;
  54. struct Library *MUIMasterBase, *LocaleBase;
  55. struct Catalog *catalog;
  56.  
  57. #define VERSION "1.2"
  58.  
  59. #include "scdplocale.h"
  60.  
  61. #define STACKSIZE 16384
  62.  
  63. #define REG(x) register __ ## x
  64. #define ASM    __asm
  65. #define SAVEDS __saveds
  66.  
  67. /* For the fonts */
  68. struct TextFont *normalfont=NULL;
  69. struct TextFont *tinyfont=NULL;
  70. struct TextFont *fixedfont=NULL;
  71. struct TextFont *listfont=NULL;
  72. struct TextFont *titlefont=NULL;
  73. BOOL customfonts=FALSE;
  74. char *normalname="topaz/8";
  75. char *tinyname="topaz/8";
  76. char *fixedname="topaz/8";
  77. char *listname="topaz/8";
  78. char *titlename="topaz/8";
  79.  
  80. struct MUI_CustomClass *CL_ProgramList=NULL;
  81.  
  82. /*************************/
  83. /* Init & Fail Functions */
  84. /*************************/
  85.  
  86. static VOID fail(APTR app,char *str)
  87. {
  88.         if (app)
  89.                 MUI_DisposeObject(app);
  90.  
  91. #ifndef _DCC
  92.         if (MUIMasterBase)
  93.                 CloseLibrary(MUIMasterBase);
  94. #endif
  95.         if (LocaleBase)
  96.         {
  97.             CloseLibrary(LocaleBase);
  98.             if(catalog)
  99.                 CloseCatalog(catalog);
  100.         }
  101.  
  102.         if(normalfont)
  103.             CloseFont(normalfont);
  104.         if(tinyfont)
  105.             CloseFont(tinyfont);
  106.         if(fixedfont)
  107.             CloseFont(fixedfont);
  108.         if(listfont)
  109.             CloseFont(listfont);
  110.         if(titlefont)
  111.             CloseFont(titlefont);
  112.  
  113.         if(CL_ProgramList)
  114.             MUI_DeleteCustomClass(CL_ProgramList);
  115.  
  116.         if (str)
  117.         {
  118.                 puts(str);
  119.                 exit(20);
  120.         }
  121.         exit(0);
  122. }
  123.  
  124.  
  125. #ifdef _DCC
  126.  
  127. int brkfunc(void) { return(0); }
  128.  
  129. int wbmain(struct WBStartup *wb_startup)
  130. {
  131.         extern int main(int argc, char *argv[]);
  132.         return (main(0, (char **)wb_startup));
  133. }
  134.  
  135. #endif
  136.  
  137.  
  138. #ifdef __SASC
  139. int CXBRK(void) { return(0); }
  140. int _CXBRK(void) { return(0); }
  141. void chkabort(void) {}
  142. #endif
  143.  
  144.  
  145. static VOID init(VOID)
  146. {
  147. #ifdef _DCC
  148.         onbreak(brkfunc);
  149. #endif
  150.  
  151. #ifndef _DCC
  152.         if (!(MUIMasterBase = OpenLibrary(MUIMASTER_NAME,MUIMASTER_VMIN)))
  153.                 fail(NULL,glstr(MSG_FailMUI));
  154. #endif
  155.         if(LocaleBase = OpenLibrary("locale.library",38))
  156.         {
  157.             catalog=OpenCatalog(NULL,"scdp.catalog",NULL);
  158.         }
  159. }
  160.  
  161.  
  162. #ifndef MAKE_ID
  163. #define MAKE_ID(a,b,c,d) ((ULONG) (a)<<24 | (ULONG) (b)<<16 | (ULONG) (c)<<8 | (ULONG) (d))
  164. #endif
  165.  
  166.  
  167. #define BYTES_PER_LINE  16
  168. #define SENSE_LEN 252
  169. #define MAX_DATA_LEN 252
  170. #define MAX_TOC_LEN 804         /* max TOC size = 100 TOC track descriptors */
  171. #define PAD 0
  172. #define LINE_BUF        (128)
  173. #define NUM_OF_CDDAFRAMES 75    /* 75 frames per second audio */
  174. #define CDDALEN 2448            /* 1 frame has max. 2448 bytes (subcode 2) */
  175.  
  176. #define OFFS_KEY 2
  177. #define OFFS_CODE 12
  178.  
  179. typedef struct MsgPort MSGPORT;
  180. typedef struct IOStdReq IOSTDREQ;
  181. typedef struct List LIST;
  182. typedef struct Node NODE;
  183. typedef struct SCSICmd SCSICMD;
  184.  
  185. typedef struct
  186.  {
  187.    BYTE   code;
  188.    UBYTE  *ptr;
  189.  } IDTOSTRING;
  190.  
  191. typedef struct
  192.  {
  193.    UBYTE  opcode;
  194.    UBYTE  b1;
  195.    UBYTE  b2;
  196.    UBYTE  b3;
  197.    UBYTE  b4;
  198.    UBYTE  control;
  199.  } SCSICMD6;
  200.  
  201. typedef struct
  202.  {
  203.    UBYTE  opcode;
  204.    UBYTE  b1;
  205.    UBYTE  b2;
  206.    UBYTE  b3;
  207.    UBYTE  b4;
  208.    UBYTE  b5;
  209.    UBYTE  b6;
  210.    UBYTE  b7;
  211.    UBYTE  b8;
  212.    UBYTE  control;
  213.  } SCSICMD10;
  214.  
  215. typedef struct
  216.  {
  217.    UBYTE  opcode;
  218.    UBYTE  b1;
  219.    UBYTE  b2;
  220.    UBYTE  b3;
  221.    UBYTE  b4;
  222.    UBYTE  b5;
  223.    UBYTE  b6;
  224.    UBYTE  b7;
  225.    UBYTE  b8;
  226.    UBYTE  b9;
  227.    UBYTE  b10;
  228.    UBYTE  control;
  229.  } SCSICMD12;
  230.  
  231. #define SCSI_CMD_TUR    0x00
  232. #define SCSI_CMD_RZU    0x01
  233. #define SCSI_CMD_RQS    0x03
  234. #define SCSI_CMD_FMU    0x04
  235. #define SCSI_CMD_RAB    0x07
  236. #define SCSI_CMD_RD     0x08
  237. #define SCSI_CMD_WR     0x0A
  238. #define SCSI_CMD_SK     0x0B
  239. #define SCSI_CMD_INQ    0x12
  240. #define SCSI_CMD_MSL    0x15
  241. #define SCSI_CMD_RU     0x16
  242. #define SCSI_CMD_RLU    0x17
  243. #define SCSI_CMD_MSE    0x1A
  244. #define SCSI_CMD_SSU    0x1B
  245. #define SCSI_CMD_RDI    0x1C
  246. #define SCSI_CMD_SDI    0x1D
  247. #define SCSI_CMD_PAMR   0x1E
  248. #define SCSI_CMD_RCP    0x25
  249. #define SCSI_CMD_RXT    0x28
  250. #define SCSI_CMD_WXT    0x2A
  251. #define SCSI_CMD_SKX    0x2B
  252. #define SCSI_CMD_WVF    0x2E
  253. #define SCSI_CMD_VF     0x2F
  254. #define SCSI_CMD_RDD    0x37
  255. #define SCSI_CMD_WDB    0x3B
  256. #define SCSI_CMD_RDB    0x3C
  257.  
  258. #define SCSI_CMD_COPY           0x18
  259. #define SCSI_CMD_COMPARE        0x39
  260. #define SCSI_CMD_COPYANDVERIFY  0x3A
  261. #define SCSI_CMD_CHGEDEF        0x40
  262. #define SCSI_CMD_READSUBCHANNEL 0x42
  263. #define SCSI_CMD_READTOC        0x43
  264. #define SCSI_CMD_READHEADER     0x44
  265. #define SCSI_CMD_PLAYAUDIO12    0xA5
  266. #define SCSI_CMD_PLAYAUDIOTRACKINDEX    0x48
  267. #define SCSI_CMD_PAUSERESUME    0x4B
  268.  
  269.